23.05.15
오늘 한 일
- 알고리즘 문제 풀이
- 익스텐션 개발
익스텐션 개발
크롤링 로직을 대폭 수정했다. 일반 과제 뿐만 아니라 동영상 과제도 가져왔다. 더 많은 페이지를 들어가서 크롤링하게 되어서 데이터 가져오기까지의 시간이 조금 더 걸리긴 하지만, 동영상 과제를 가져오기 위해서는 어쩔 수 없었다.
동영상 과제의 출석 여부를 확인하기 위해서는 각 강의 페이지의 학습진도현황
탭에서 확인할 수 있다. 하지만 여기에 있는 데이터는 동영상 과제의 제목
과 출석인정 요구시간
, 그리고 총 학습시간
밖에 없다. 출석 여부는 총 학습시간
에서 출석인정 요구시간
을 비교해 총 학습시간이 출석인정 요구시간보다 크거나 같으면 출석한 것으로 보았다.
나머지 동영상 과제의 id
나 제출기한
같은 데이터는 강의 페이지에 있다.
일반 과제는 강의 페이지의 과제
탭에 필요한 모든 데이터가 들어가 있어 비교적 쉽게 가져올 수 있었다.
즉 정리하면 이렇다.
- 일반 과제
- 강의 페이지의
과제
탭에서 가져올 수 있는 데이터id
과제명
제출기한
제출여부
- 강의 페이지의
- 동영상 과제
- 강의 페이지의
학습진도현황
탭에서 가져올 수 있는 데이터과제명
출석 여부
- 강의 페이지에서 가져올 수 있는 데이터
id
과제명
제출기한
영상길이
- 강의 페이지의
동영상 과제를 두 곳에서 받아와서 데이터를 합쳐서 내가 원하는 데이터를 얻을 수 있었다.
그리고 몇몇 수정해야할 부분들 수정하고 리팩토링을 진행했다.
convertDateTime
함수를 만들어서 날짜와 시간을 한글로 변환해주는 함수를 만들었다.
function convertDateTime(dateTime: string) {
const [, month, day, hour, minute] = dateTime.split(/\-|:| /);
const date = new Date(dateTime);
const dayName = ['일', '월', '화', '수', '목', '금', '토'][date.getDay()];
return `${month}월 ${day}일 (${dayName}) ${hour}시 ${minute}분`;
}
후에 테스트코드도 작성해보고 싶다. 연습할 겸 테스트코드를 작성하면서 더욱 완성도 있는 코드를 만들고 싶다.
추가 예정 기능 과제 데이터를 스토리지에 저장하여 일정 시간이 지나면 다시 크롤링하도록 만들기 과제 숨기기 기능 반응형 UI 외국인 학생들을 위한 영어 지원
내일 할 일
- 알고리즘 문제 풀이
- 바닐라 JS로 리액트 만들기 스터디 정리 및 발표
- Nest.js 강의 듣기
- 포트폴리오 작성